package cliente_empresa
import comunicaciones.Comunicacion
import planes.Plan

class Cliente(var nombre :String ,var comunicaciones :List[Comunicacion],var planes :List[Plan]) {

/**
 *  Agrega una comunicacion 
 */
   def addComunicacion(llamada : Comunicacion){
	   this.comunicaciones = llamada :: this.comunicaciones
   }
   
   /**
    *  Agrega un plan 
    */
   def addPlan(plan : Plan){
	   this.planes = plan :: this.planes
   }
   
   /**
    *  Calcula cuanto se debe pagar el cliente en ese mes
    */ 
   def cuantoDebePagarEnMes(mes :Int): Double = {
     var llamadas : List[Comunicacion] = List()
     for(call <- this.comunicaciones){
       llamadas = this.aplicarPlanes(call,this.planes) :: llamadas
     }
     this.obtenerPrecioTotal(llamadas)
   }
   
   def aplicarPlanes(llamada :Comunicacion, planes : List[Plan]): Comunicacion ={
     var call = llamada
     for(plan <- planes){
       call = plan.aplicarDescuento(call)
     }
     call
   }
   
   /**
    *  Calcula el precio de una lista de llamadas
    */
   def obtenerPrecioTotal(llamadas : List[Comunicacion]): Double ={
     var total = 0.0
     for(call <- llamadas){
       total = total + call.calcularPrecio
     }
     total = total + (this.planes.count(c => true)* 10).toDouble
     total
   }
   
   
   
}